Copyright 2015 Autodesk, Inc.  All rights reserved.

Use of this software is subject to the terms of the Autodesk license 
agreement provided at the time of installation or download, or which 
otherwise accompanies this software in either electronic or hard copy form.   

//
// acrxmac.txt 

The following are the actual expansions of the ACRX macros for
AcDbPoly (reformatted to fit into 60 column text -- the actual
expansions are one very long line each).  This information was 
generated by using the /E compiler switch.

// THE FOLLOWING APPEARS IN THE SDK DOCUMENT.

For AsdkPoly,  the line:

    ACRX_DECLARE_MEMBERS(AsdkPoly);

expands to a single long line of code which,  when reformatted
to multiple lines for clarity,  looks like this:

virtual AcRxClass* isA() const;
static AcRxClass* gpDesc;
static AcRxClass* desc();
static AsdkPoly* cast(const AcRxObject* inPtr)
{
    return ((inPtr == 0)
        || !inPtr->isKindOf(AsdkPoly::desc()))
        ? 0 : (AsdkPoly*)inPtr;
};
static void rxInit();




For AcDbPoly the line:

ACRX_DXF_DEFINE_MEMBERS(AsdkPoly, AcDbCurve, AcDb::kDHL_CURRENT,\
                        AcDb::kMReleaseCurrent, 0, POLYGON,\
/*MSG0*/"AutoCAD");

expands to a very long single line of code which,  when reformatted
to multiple lines for clarity,  looks like this:

AcRxClass* AsdkPoly::desc()
{
    if (AsdkPoly::gpDesc != 0)
        return AsdkPoly::gpDesc;
    return AsdkPoly::gpDesc =
        (AcRxClass*)((AcRxDictionary*)acrxSysRegistry()->
        at("ClassDictionary"))->at("AsdkPoly");
}

AcRxClass* AsdkPoly::isA() const
{
    return AsdkPoly::desc();
}

AcRxClass* AsdkPoly::gpDesc = 0;

static AcRxObject * makeAsdkPoly()
{
    return new AsdkPoly();
}

void AsdkPoly::rxInit()
{
    if (AsdkPoly::gpDesc != 0)
        return;
    AsdkPoly::gpDesc = newAcRxClass("AsdkPoly",
        "AsdkCurve", AcDb::kDHL_CURRENT, AcDb::kMReleaseCurrent,
         0, &makeAsdkPoly, "POLYGON", "\"AutoCAD\"");
};

Notice that, when expanded,  the semicolon (;) at the end of the
macro call line ends up just after the closing brace (}) for a function
definition.  So,  this semicolon is not needed for this macro call
line,  but it doesn't hurt.

// END TEXT APPEARING IN SDK DOCUMENT.
